package com.hongji.lms5xxcommunicator.realtime.websoket;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;

/**
 * WebSocket 配置类。
 *
 * <p>职责：
 * <ul>
 *   <li>启用 Spring WebSocket 功能。</li>
 *   <li>注册 {@link StreamHandler} 作为指定路径的处理器。</li>
 * </ul>
 *
 * <p>使用说明：
 * <ol>
 *   <li>前端通过 <code>ws://&lt;host&gt;:&lt;port&gt;/stream</code> 建立连接。</li>
 *   <li>所有会话将由 {@link StreamHandler} 管理，并通过 {@link StreamHub} 进行广播。</li>
 * </ol>
 */
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {

    private final StreamHandler streamHandler;

    public WebSocketConfig(StreamHandler streamHandler) {
        this.streamHandler = streamHandler;
    }

    /**
     * 注册 WebSocket 处理器。
     *
     * <p>配置：
     * <ul>
     *   <li>路径：<code>/stream</code></li>
     *   <li>允许任意来源（*），用于开发和跨域调试。</li>
     * </ul>
     *
     * @param registry Spring WebSocket 注册器
     */
    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        // 前端连接地址 ws://<host>:<port>/stream
        registry.addHandler(streamHandler, "/stream")
                .setAllowedOrigins("*");
    }
}
